package v1

import "github.com/gogf/gf/v2/frame/g"

// 查询列表	GetListReq/Res	通常是从数据库中分页查询数据记录
// 查询详情	GetOneReq/Res	通常接口需要传递主键条件，从数据库中查询记录详情
// 创建资源	CreateReq/Res	通常是往数据表中插入一条或多条数据记录
// 修改资源	UpdateReq/Res	通常是按照一定条件修改数据表中的一条或多条数据记录
// 删除资源	DeleteReq/Res	通常是按照一定条件删除数据表中的一条或多条数据记录

type RoleDetail struct {
	Name   string `json:"name"  `
	Pid    int    `json:"pid"   `
	Status uint   `json:"status"`
	Remark string `json:"remark"`
}

// 查询
type GetListReq struct {
	g.Meta `path:"/role/get_list" method:"post" sm:"查询角色" tags:"权限"`
}

type GetListRes struct {
	Roles []*RoleDetail
}

// 查询一条
type DetailReq struct {
	g.Meta `path:"/role/detail" method:"get" sm:"查看角色信息" tags:"权限"`
	Id     int64 `json:"id" v:"integer|min:1"  dc:"用户名"`
}

type DetailRes struct {
	RoleDetail
}

// 创建
type CreateReq struct {
	g.Meta `path:"/role/create" method:"post" sm:"创建一个角色" tags:"权限"`
	Name   string `json:"name"   v:"required|length:1,10"  dc:"角色名"  `
	Pid    int    `json:"pid"    v:"integer|min:0"  dc:"父级ID"  `
	Status uint   `json:"status" v:"integer|min:1"  dc:"状态"  `
	Remark string `json:"remark"   dc:"备注"  `
}

type CreateRes struct {
	Id int64 `json:"id"   `
}

// 修改
type UpdateReq struct {
	g.Meta `path:"/role/update" method:"post" sm:"修改角色" tags:"权限"`
	Id     uint   `json:"id" v:"integer|min:1" dc:"用户名"`
	Name   string `json:"name" v:"required|length:1,10" dc:"角色名"  `
	Pid    int    `json:"pid" v:"integer|min:0" dc:"父级ID"  `
	Status uint   `json:"status" v:"integer|min:1" dc:"状态"  `
	Remark string `json:"remark" dc:"备注"  `
}

type UpdateRes struct {
}

// 删除
type DeleteReq struct {
	g.Meta `path:"/role/delete" method:"post" sm:"删除角色" tags:"权限"`
	Id     uint `json:"id" v:"integer|min:1" dc:"角色id"`
}

type DeleteRes struct {
	Nums int64 `json:"nums"   dc:"删除的数量" `
}

////////////// 为管理员赋予角色
// 为用户指定一个角色
type AddMemberReq struct {
	g.Meta   `path:"/role/add_member" method:"post" sm:"为用户指定一个角色" tags:"权限"`
	RoleId   uint `json:"role_id"   v:"integer|min:1"  dc:"角色ID"  `
	MemberId uint `json:"member_id" v:"integer|min:1"  dc:"管理员ID"  `
}

type AddMemberRes struct {
	Id int64 `json:"id"   `
}

// 为用户删除一个角色
type DeleteMemberReq struct {
	g.Meta `path:"/role/delete_member" method:"post" sm:"为用户删除一个角色" tags:"权限"`
	Id     uint `json:"id" v:"integer|min:1" dc:"角色id"`
}

type DeleteMemberRes struct {
	Nums int64 `json:"nums" dc:"删除的数量" `
}
